ModEditor.GUI.WindowList = {}
ModEditor.Internal.LastId = 1
ModEditor.GUI.ActiveWindowId = 0

function ModEditor.Windows.Add(wnd)
	ModEditor.Internal.LastId = ModEditor.Internal.LastId + 1
	wnd.Id = ModEditor.Internal.LastId
	table.insert(ModEditor.GUI.WindowList,wnd)
end
function ModEditor.Windows.Remove(id)
	for i = 1,#ModEditor.GUI.WindowList do
		if id == ModEditor.GUI.WindowList[i].Id then
			ModEditor.GUI.WindowList[i].Remove()
			table.remove(ModEditor.GUI.WindowList,i)
			break
		end
	end
end
function ModEditor.Windows.Find(id)
	for i=1,#ModEditor.GUI.WindowList do
		if ModEditor.GUI.WindowList[i].Id == id then
			return ModEditor.GUI.WindowList[i]
		end
	end
	return nil
end
function ModEditor.Windows.Activate(id)
	for i=1,#ModEditor.GUI.WindowList do
		if ModEditor.GUI.WindowList[i].Id == id then
			if ModEditor.GUI.WindowList[1] ~= nil then
				ModEditor.GUI.WindowList[1]:Deactivate()
			end
			local wnd = ModEditor.GUI.WindowList[i]
			table.remove(ModEditor.GUI.WindowList,i)
			table.insert(ModEditor.GUI.WindowList,1,wnd)
			ModEditor.GUI.ActiveWindowId = id
			if wnd.Child ~= nil then
				ModEditor.Windows.Activate(wnd.Child.Id)
			end
			return
		end
	end
end
function ModEditor.Windows.Draw()
	for i=1,#ModEditor.GUI.WindowList do
		ModEditor.GUI.WindowList[#ModEditor.GUI.WindowList-i+1]:Draw()
	end
end
